package io.renren.modules.oss.util;

import io.renren.common.constant.Constant;
import io.renren.common.constant.Constant.CloudService;
import io.renren.modules.oss.config.CloudStorageConfig;
import io.renren.modules.oss.properties.OSSConfigProperties;

/**
 * @author: huan.xu
 * @create: 2023/12/23 14:54
 * @description: 云存储工具类
 **/
public class OSSUtil {

  /**
   * OSSConfigProperties 转换成 CloudStorageConfig
   */
  public static CloudStorageConfig ossConfigPropertiesToCloudStorageConfig(
      OSSConfigProperties ossConfigProperties) {
    CloudStorageConfig config = new CloudStorageConfig();
    config.setType(ossConfigProperties.getCloudType());

    if (ossConfigProperties.getCloudType() == Constant.CloudService.QINIU.getValue()) {
      config.setQiniuDomain(ossConfigProperties.getQiniu().getQiniuDomain());
      config.setQiniuPrefix(ossConfigProperties.getQiniu().getQiniuPrefix());
      config.setQiniuAccessKey(ossConfigProperties.getQiniu().getQiniuAccessKey());
      config.setQiniuSecretKey(ossConfigProperties.getQiniu().getQiniuSecretKey());
      config.setQiniuBucketName(ossConfigProperties.getQiniu().getQiniuBucketName());
    } else if (ossConfigProperties.getCloudType() == Constant.CloudService.ALIYUN.getValue()) {
      config.setAliyunDomain(ossConfigProperties.getAliyun().getAliyunDomain());
      config.setAliyunPrefix(ossConfigProperties.getAliyun().getAliyunPrefix());
      config.setAliyunEndPoint(ossConfigProperties.getAliyun().getAliyunEndPoint());
      config.setAliyunAccessKeyId(ossConfigProperties.getAliyun().getAliyunAccessKeyId());
      config.setAliyunAccessKeySecret(ossConfigProperties.getAliyun().getAliyunAccessKeySecret());
      config.setAliyunBucketName(ossConfigProperties.getAliyun().getAliyunBucketName());
    } else if (ossConfigProperties.getCloudType() == Constant.CloudService.QCLOUD.getValue()) {
      config.setQcloudDomain(ossConfigProperties.getQcloud().getQcloudDomain());
      config.setQcloudPrefix(ossConfigProperties.getQcloud().getQcloudPrefix());
      config.setQcloudAppId(ossConfigProperties.getQcloud().getQcloudAppId());
      config.setQcloudSecretId(ossConfigProperties.getQcloud().getQcloudSecretId());
      config.setQcloudSecretKey(ossConfigProperties.getQcloud().getQcloudSecretKey());
      config.setQcloudBucketName(ossConfigProperties.getQcloud().getQcloudBucketName());
      config.setQcloudRegion(ossConfigProperties.getQcloud().getQcloudRegion());
    } else if (ossConfigProperties.getCloudType() == Constant.CloudService.FTP.getValue()) {
      config.setFtpHost(ossConfigProperties.getFtp().getFtpHost());
      config.setFtpPort(ossConfigProperties.getFtp().getFtpPort());
      config.setFtpUser(ossConfigProperties.getFtp().getFtpUser());
      config.setFtpPwd(ossConfigProperties.getFtp().getFtpPwd());
      config.setFtpProfix(ossConfigProperties.getFtp().getFtpProfix());
      config.setFtpNginxUrl(ossConfigProperties.getFtp().getFtpNginxUrl());
    } else if (ossConfigProperties.getCloudType() == CloudService.MINIO.getValue()) {
      config.setMinioEndpoint(ossConfigProperties.getMinio().getMinioEndpoint());
      config.setMinioPort(ossConfigProperties.getMinio().getMinioPort());
      config.setMinioAccessKey(ossConfigProperties.getMinio().getMinioAccessKey());
      config.setMinioSecretKey(ossConfigProperties.getMinio().getMinioSecretKey());
      config.setMinioSecure(ossConfigProperties.getMinio().getMinioSecure());
      config.setMinioBucketName(ossConfigProperties.getMinio().getMinioBucketName());
      config.setMinioDownloadUrl(ossConfigProperties.getMinio().getMinioDownloadUrl());
    }
    return config;
  }
}
